1. 실행환경 세팅
환경별 구성 방법:
| 환경 | 구성 요소 | 비고 |
|---|---|---|
| Docker Desktop | Docker Desktop + Kubernetes | 권장 (Windows/macOS) |
| Minikube | Minikube + kubectl | 독립 실행 환경 |
| 클라우드 | GKE, EKS, AKS | 운영 환경용 |
- Kubernetes(쿠버네티스): 컨테이너화된 애플리케이션의 배포, 확장, 관리를 자동화하는 오픈소스 오케스트레이션 플랫폼. K8s라고도 표기
- kubectl: Kubernetes 클러스터와 통신하기 위한 CLI(Command Line Interface) 도구
- Minikube: 로컬 환경에서 단일 노드 Kubernetes 클러스터를 실행할 수 있게 해주는 도구
- GKE(Google Kubernetes Engine): Google Cloud의 관리형 Kubernetes 서비스
- EKS(Elastic Kubernetes Service): AWS의 관리형 Kubernetes 서비스
- AKS(Azure Kubernetes Service): Microsoft Azure의 관리형 Kubernetes 서비스
사전 요구사항
필수 소프트웨어
Docker Desktop이 설치되어 있어야 함
- Windows: Docker Desktop for Windows
- macOS: Docker Desktop for Mac
- 버전: 4.0.0 이상 (Kubernetes 지원)
참고: Docker 환경 설정이 되어 있지 않다면 먼저
도커/1. 실행환경 세팅.md문서를 참고하여 Docker Desktop을 설치할 것
kubectl 설치 확인
PowerShell (Windows) / Terminal (macOS/Linux):
# kubectl 버전 확인
kubectl version --client
출력 예시:
Client Version: v1.29.2
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
kubectl이 설치되어 있지 않은 경우:
Docker Desktop을 설치했다면 kubectl은 자동으로 함께 설치됨. 위 명령어가 작동하지 않으면 Docker Desktop 재설치 또는 별도 kubectl 설치 필요
Docker Desktop Kubernetes 활성화
1단계: Docker Desktop 설정 열기
Windows:
- 작업 표시줄에서 Docker Desktop 아이콘 우클릭
- "Settings" 또는 "Dashboard" 클릭 후 설정(톱니바퀴) 아이콘
macOS:
- 상단 메뉴 바에서 Docker 아이콘 클릭
- "Preferences..." 또는 "Settings" 선택
2단계: Kubernetes 기능 활성화
설정 화면:
Docker Desktop Settings
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
왼쪽 메뉴:
├─ General
├─ Resources
├─ Docker Engine
├─ Kubernetes ← 여기 선택
├─ Software Updates
└─ ...
Kubernetes 탭:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
☑ Enable Kubernetes
Show system containers (advanced)
☐ ...
Kubernetes version: v1.29.2
[Apply & Restart]
활성화 단계:
- 왼쪽 메뉴에서 "Kubernetes" 클릭
- "Enable Kubernetes" 체크박스 선택
- 하단의 "Apply & Restart" 버튼 클릭
- Docker Desktop 재시작 대기 (1~2분 소요)
3단계: 활성화 진행 상황 확인
Docker Desktop 상태:
작업 표시줄/메뉴 바 아이콘 상태:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[진행 중]
Docker Desktop is starting...
Kubernetes is starting...
[완료]
Docker Desktop is running
Kubernetes is running
마우스를 아이콘 위에 올리면 상태 확인 가능
4단계: 활성화 완료 확인
PowerShell / Terminal:
# 현재 kubectl 컨텍스트 확인
kubectl config current-context
출력:
docker-desktop
의미:
- kubectl이 Docker Desktop의 Kubernetes 클러스터에 자동 연결됨
- 별도 설정 없이 즉시 사용 가능
Kubernetes 클러스터 확인
클러스터 정보 확인
# 클러스터 정보 출력
kubectl cluster-info
출력 예시:
Kubernetes control plane is running at https://kubernetes.docker.internal:6443
CoreDNS is running at https://kubernetes.docker.internal:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
확인 사항:
- Kubernetes API 서버 주소:
https://kubernetes.docker.internal:6443 - CoreDNS 정상 작동 확인
- Control Plane(컨트롤 플레인): Kubernetes 클러스터를 관리하는 핵심 컴포넌트 집합. API 서버, 스케줄러, 컨트롤러 매니저, etcd로 구성
- API 서버(kube-apiserver): Kubernetes의 모든 요청을 처리하는 중앙 관문. kubectl 명령어가 이 서버와 통신
- CoreDNS: 클러스터 내부에서 서비스 이름을 IP 주소로 변환하는 DNS 서버
노드 확인
# 클러스터 노드 목록
kubectl get nodes
출력 예시:
NAME STATUS ROLES AGE VERSION
docker-desktop Ready control-plane 5m v1.29.2
필드 설명:
| 필드 | 설명 |
|---|---|
| NAME | 노드 이름 (docker-desktop) |
| STATUS | 노드 상태 (Ready = 정상) |
| ROLES | 노드 역할 (control-plane = 마스터 노드) |
| AGE | 노드 실행 시간 |
| VERSION | Kubernetes 버전 |
특징:
- Docker Desktop Kubernetes는 단일 노드 클러스터
- 마스터(control-plane)와 워커 역할을 모두 수행
- 개발 및 학습용으로 충분
- 노드(Node): Kubernetes 클러스터를 구성하는 개별 서버(물리 또는 가상 머신). 컨테이너가 실제로 실행되는 곳
- 마스터 노드(Master Node): Control Plane이 실행되는 노드. 클러스터 전체를 관리
- 워커 노드(Worker Node): 실제 애플리케이션 컨테이너가 실행되는 노드
- 클러스터(Cluster): 여러 노드가 모여 하나의 시스템처럼 작동하는 구성
시스템 Pod 확인
# kube-system 네임스페이스의 Pod 확인
kubectl get pods -n kube-system
출력 예시:
NAME READY STATUS RESTARTS AGE
coredns-5dd5756b68-xxxxx 1/1 Running 0 5m
coredns-5dd5756b68-yyyyy 1/1 Running 0 5m
etcd-docker-desktop 1/1 Running 0 5m
kube-apiserver-docker-desktop 1/1 Running 0 5m
kube-controller-manager-docker-desktop 1/1 Running 0 5m
kube-proxy-xxxxx 1/1 Running 0 5m
kube-scheduler-docker-desktop 1/1 Running 0 5m
storage-provisioner 1/1 Running 0 5m
vpnkit-controller 1/1 Running 0 5m
주요 컴포넌트:
| Pod 이름 | 역할 |
|---|---|
| coredns | 클러스터 내부 DNS 서비스 |
| etcd | 클러스터 데이터 저장소 |
| kube-apiserver | Kubernetes API 서버 |
| kube-controller-manager | 컨트롤러 관리 |
| kube-scheduler | Pod 스케줄링 |
| kube-proxy | 네트워크 프록시 |
| storage-provisioner | 스토리지 프로비저닝 |
- Pod(파드): Kubernetes에서 배포 가능한 가장 작은 단위. 하나 이상의 컨테이너를 포함
- etcd: 클러스터의 모든 상태 정보를 저장하는 분산 키-값 저장소. 고가용성과 일관성 보장
- kube-scheduler: 새로 생성된 Pod를 적절한 노드에 배치하는 컴포넌트
- kube-controller-manager: 노드, 복제, 서비스 등 다양한 컨트롤러를 실행하는 컴포넌트
- kube-proxy: 각 노드에서 네트워크 규칙을 관리하고 서비스로의 트래픽을 전달
- 프로비저닝(Provisioning): 필요한 자원(스토리지, 네트워크 등)을 자동으로 생성하고 할당하는 과정
정상 상태: 모든 Pod의 STATUS가 Running이어야 함
Linux 환경 세팅
사전 요구사항
Docker Engine이 설치되어 있어야 함
참고: Docker 환경 설정이 되어 있지 않다면 먼저
도커/1. 실행환경 세팅.md문서의 Linux 섹션을 참고하여 Docker Engine을 설치할 것
1단계: kubectl 설치
# 최신 kubectl 다운로드
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
# 실행 권한 부여
chmod +x kubectl
# 시스템 경로로 이동
sudo mv kubectl /usr/local/bin/
# 설치 확인
kubectl version --client
출력 예시:
Client Version: v1.29.2
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
2단계: Minikube 설치
# Minikube 바이너리 다운로드
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
# 실행 권한 부여
chmod +x minikube-linux-amd64
# 시스템 경로로 이동
sudo mv minikube-linux-amd64 /usr/local/bin/minikube
# 설치 확인
minikube version
출력 예시:
minikube version: v1.32.0
commit: 8220a6eb95f0a4d75f7f2d7b14cef975f050512d
3단계: Minikube 클러스터 시작
# Minikube 클러스터 시작 (Docker 드라이버 사용)
minikube start --driver=docker
# 또는 VM 기반 (KVM 사용)
# minikube start --driver=kvm2
출력 예시:
minikube v1.32.0 on Ubuntu 22.04
Using the docker driver based on user configuration
Starting control plane node minikube in cluster minikube
Pulling base image ...
Creating docker container (CPUs=2, Memory=2200MB) ...
Preparing Kubernetes v1.29.0 on Docker 24.0.7 ...
- Generating certificates and keys ...
- Booting up control plane ...
- Configuring RBAC rules ...
Configuring bridge CNI (Container Networking Interface) ...
Verifying Kubernetes components...
- Using image gcr.io/k8s-minikube/storage-provisioner:v5
Enabled addons: storage-provisioner, default-storageclass
Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
소요 시간: 첫 실행 시 약 1~2분
4단계: 클러스터 확인
# 현재 컨텍스트 확인
kubectl config current-context
출력:
minikube
# 노드 확인
kubectl get nodes
출력 예시:
NAME STATUS ROLES AGE VERSION
minikube Ready control-plane 2m v1.29.0
# 시스템 Pod 확인
kubectl get pods -n kube-system
출력 예시:
NAME READY STATUS RESTARTS AGE
coredns-5dd5756b68-xxxxx 1/1 Running 0 2m
etcd-minikube 1/1 Running 0 2m
kube-apiserver-minikube 1/1 Running 0 2m
kube-controller-manager-minikube 1/1 Running 0 2m
kube-proxy-xxxxx 1/1 Running 0 2m
kube-scheduler-minikube 1/1 Running 0 2m
storage-provisioner 1/1 Running 0 2m
5단계: Minikube 기본 명령어
# Minikube 상태 확인
minikube status
# Minikube 중지
minikube stop
# Minikube 재시작
minikube start
# Minikube 삭제
minikube delete
# Minikube 대시보드 실행 (웹 UI)
minikube dashboard
Docker Desktop vs Minikube 차이점
| 항목 | Docker Desktop Kubernetes | Minikube |
|---|---|---|
| 설치 | Docker Desktop에 내장 | 별도 설치 필요 |
| 시작 시간 | 10~30초 | 1~2분 |
| 컨텍스트 이름 | docker-desktop | minikube |
| 멀티 노드 | 지원 안 함 (단일 노드) | 지원 (--nodes 옵션) |
| 드라이버 | WSL2/Hyper-V (Windows), HyperKit (macOS) | Docker, KVM, VirtualBox 등 |
| 대시보드 | 없음 | 내장 (minikube dashboard) |
- WSL2(Windows Subsystem for Linux 2): Windows에서 Linux 환경을 실행할 수 있는 호환성 계층. Docker Desktop이 내부적으로 사용
- Hyper-V: Microsoft의 하드웨어 가상화 기술. Windows에서 가상 머신 실행에 사용
- KVM(Kernel-based Virtual Machine): Linux 커널에 내장된 가상화 기술
- 드라이버(Driver): Minikube가 클러스터를 실행하는 데 사용하는 가상화 또는 컨테이너 백엔드
kubectl 기본 사용법
주요 명령어 구조
kubectl [명령어] [리소스타입] [리소스이름] [옵션]
명령어 카테고리:
| 카테고리 | 명령어 | 설명 |
|---|---|---|
| 조회 | get |
리소스 목록 조회 |
describe |
리소스 상세 정보 | |
logs |
Pod 로그 조회 | |
| 생성/수정 | apply |
매니페스트 파일 적용 |
create |
리소스 생성 | |
edit |
리소스 편집 | |
| 삭제 | delete |
리소스 삭제 |
| 실행 | run |
Pod 실행 (명령형) |
exec |
Pod 내부 명령 실행 |
- 매니페스트(Manifest): Kubernetes 리소스를 정의하는 YAML 또는 JSON 파일. 선언형 배포에 사용
- 명령형(Imperative):
kubectl run,kubectl create처럼 직접 명령을 내리는 방식 - 선언형(Declarative): YAML 파일에 원하는 상태를 정의하고
kubectl apply로 적용하는 방식
리소스 타입 및 축약형
# 전체 이름 사용
kubectl get pods
kubectl get services
kubectl get deployments
# 축약형 사용 (동일한 결과)
kubectl get po
kubectl get svc
kubectl get deploy
주요 리소스 타입:
| 리소스 타입 | 축약형 | 설명 |
|---|---|---|
| pods | po | 컨테이너 실행 단위 |
| services | svc | 네트워크 서비스 |
| deployments | deploy | Pod 배포 관리 |
| replicasets | rs | Pod 복제본 관리 |
| namespaces | ns | 논리적 격리 공간 |
| nodes | no | 클러스터 노드 |
| configmaps | cm | 설정 데이터 |
| secrets | - | 민감 데이터 |
- Deployment(디플로이먼트): Pod의 생성, 업데이트, 롤백을 관리하는 상위 리소스. 복제본 수 유지와 무중단 배포 지원
- ReplicaSet(레플리카셋): 지정된 수의 Pod 복제본이 항상 실행되도록 관리. Deployment가 내부적으로 사용
- Service(서비스): Pod 집합에 대한 안정적인 네트워크 엔드포인트 제공. 로드 밸런싱과 서비스 디스커버리 담당
- ConfigMap(컨피그맵): 설정 데이터를 키-값 쌍으로 저장하는 리소스. 컨테이너에 환경 변수나 파일로 주입
- Secret(시크릿): 비밀번호, 토큰 등 민감한 데이터를 저장하는 리소스. Base64 인코딩됨
네임스페이스 사용
# 특정 네임스페이스의 리소스 조회
kubectl get pods -n kube-system
# 모든 네임스페이스의 리소스 조회
kubectl get pods --all-namespaces
# 축약형
kubectl get pods -A
기본 네임스페이스:
| 네임스페이스 | 용도 |
|---|---|
| default | 기본 작업 공간 |
| kube-system | 시스템 컴포넌트 |
| kube-public | 공개 리소스 |
| kube-node-lease | 노드 하트비트 |
- 네임스페이스(Namespace): Kubernetes 클러스터 내에서 리소스를 논리적으로 분리하는 가상 클러스터. 팀별, 환경별(dev/prod) 격리에 사용
- 하트비트(Heartbeat): 노드가 정상 작동 중임을 알리기 위해 주기적으로 보내는 신호
첫 번째 테스트
nginx Pod 실행
# nginx Pod 생성 (명령형)
kubectl run nginx-test --image=nginx:latest
출력:
pod/nginx-test created
Pod 상태 확인
# Pod 목록 조회
kubectl get pods
출력 예시:
NAME READY STATUS RESTARTS AGE
nginx-test 1/1 Running 0 10s
STATUS 단계:
| 상태 | 의미 |
|---|---|
| Pending | 스케줄링 대기 중 |
| ContainerCreating | 컨테이너 생성 중 |
| Running | 정상 실행 중 |
| Completed | 실행 완료 (Job) |
| Error | 오류 발생 |
| CrashLoopBackOff | 반복 재시작 실패 |
- 스케줄링(Scheduling): Pod를 실행할 적절한 노드를 선택하는 과정. kube-scheduler가 담당
- CrashLoopBackOff: 컨테이너가 시작 후 바로 종료되어 계속 재시작을 시도하는 상태. 설정 오류나 애플리케이션 버그가 원인
Pod 상세 정보 확인
# Pod 상세 정보
kubectl describe pod nginx-test
출력 예시 (일부):
Name: nginx-test
Namespace: default
Priority: 0
Service Account: default
Node: docker-desktop/192.168.65.3
Start Time: Thu, 09 Jan 2026 10:00:00 +0900
Labels: run=nginx-test
Status: Running
IP: 10.1.0.10
...
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 20s default-scheduler Successfully assigned default/nginx-test to docker-desktop
Normal Pulling 19s kubelet Pulling image "nginx:latest"
Normal Pulled 15s kubelet Successfully pulled image "nginx:latest"
Normal Created 15s kubelet Created container nginx-test
Normal Started 15s kubelet Started container nginx-test
Pod 로그 확인
# Pod 로그 출력
kubectl logs nginx-test
출력 예시:
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
...
2026/01/09 01:00:00 [notice] 1#1: nginx/1.25.3
Pod 내부 접속
# Pod 내부 쉘 접속
kubectl exec -it nginx-test -- /bin/bash
컨테이너 내부에서 명령 실행:
# nginx 프로세스 확인
ps aux | grep nginx
# nginx 설정 파일 확인
cat /etc/nginx/nginx.conf
# 컨테이너 종료
exit
Pod 삭제
# Pod 삭제
kubectl delete pod nginx-test
출력:
pod "nginx-test" deleted
확인:
# Pod 목록 확인
kubectl get pods
출력:
No resources found in default namespace.
실습 디렉터리 생성
Windows (PowerShell)
# 실습 디렉터리 생성 (원하는 경로 사용)
# 예시: C 드라이브 또는 개인 문서 폴더
New-Item -ItemType Directory -Path C:\kubernetes_practice -Force
cd C:\kubernetes_practice
# 또는 개인 문서 폴더 사용
# New-Item -ItemType Directory -Path $env:USERPROFILE\Documents\kubernetes_practice -Force
# cd $env:USERPROFILE\Documents\kubernetes_practice
# 하위 디렉터리 생성
mkdir yaml
mkdir apps
# 디렉터리 구조 확인
tree /F
예상 출력:
C:\KUBERNETES_PRACTICE
├─apps
└─yaml
macOS / Linux (Bash)
# 실습 디렉터리 생성 (홈 디렉터리 권장)
mkdir -p ~/kubernetes_practice/{yaml,apps}
cd ~/kubernetes_practice
# 디렉터리 구조 확인
tree
예상 출력:
kubernetes_practice/
├── apps
└── yaml
참고: 자신의 환경에 맞는 디렉터리 경로 사용. Docker 실습 디렉터리와 같은 상위 폴더에 생성하는 것을 권장
컨텍스트 관리
컨텍스트 개념
컨텍스트(Context):
- kubectl이 연결할 클러스터, 사용자, 네임스페이스 정보의 조합
- 여러 클러스터를 손쉽게 전환 가능
~/.kube/config파일에 저장됨
- 컨텍스트(Context): 클러스터, 사용자 인증 정보, 기본 네임스페이스의 조합. 여러 클러스터를 관리할 때 전환에 사용
- kubeconfig: kubectl의 설정 파일. 클러스터 접속 정보, 인증서, 컨텍스트 등을 저장
컨텍스트 확인
# 현재 컨텍스트 확인
kubectl config current-context
출력:
docker-desktop
컨텍스트 목록 조회
# 모든 컨텍스트 보기
kubectl config get-contexts
출력 예시:
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* docker-desktop docker-desktop docker-desktop
필드 설명:
| 필드 | 설명 |
|---|---|
| CURRENT | 현재 활성화된 컨텍스트 (* 표시) |
| NAME | 컨텍스트 이름 |
| CLUSTER | 연결할 클러스터 |
| AUTHINFO | 인증 정보 |
| NAMESPACE | 기본 네임스페이스 |
컨텍스트 전환 (여러 클러스터 사용 시)
# 다른 컨텍스트로 전환 (예: minikube)
kubectl config use-context minikube
# docker-desktop으로 다시 전환
kubectl config use-context docker-desktop
kubeconfig 파일 확인
# Windows PowerShell
cat $env:USERPROFILE\.kube\config
# macOS / Linux
cat ~/.kube/config
파일 구조 (YAML 형식):
apiVersion: v1
kind: Config
clusters:
- cluster:
server: https://kubernetes.docker.internal:6443
certificate-authority-data: [인증서 데이터]
name: docker-desktop
contexts:
- context:
cluster: docker-desktop
user: docker-desktop
name: docker-desktop
current-context: docker-desktop
users:
- name: docker-desktop
user:
client-certificate-data: [인증서 데이터]
client-key-data: [키 데이터]
실습 준비 완료 확인
체크리스트
다음 명령어가 모두 정상 작동하면 실습 준비 완료:
# 1. kubectl 버전 확인
kubectl version --client
# 2. 클러스터 연결 확인
kubectl cluster-info
# 3. 노드 확인
kubectl get nodes
# 4. 시스템 Pod 확인
kubectl get pods -n kube-system
# 5. 테스트 Pod 생성 및 삭제
kubectl run test --image=nginx
kubectl get pods
kubectl delete pod test
모든 명령어가 성공하면 실습 환경 설정 완료
참고 자료
공식 문서:
- Kubernetes 공식 문서: https://kubernetes.io/docs/
- kubectl 치트시트: https://kubernetes.io/docs/reference/kubectl/cheatsheet/
- Docker Desktop Kubernetes: https://docs.docker.com/desktop/kubernetes/
커뮤니티:
- Kubernetes Slack: https://slack.k8s.io/
- Stack Overflow: https://stackoverflow.com/questions/tagged/kubernetes
모든 명령어가 성공하면 실습 환경 설정 완료
kubectl 생산성 향상 설정
kubectl 단축어 설정 (alias)
kubectl을 k로 단축하여 사용 가능
Windows (PowerShell)
PowerShell 프로필 파일 편집:
# 프로필 파일 존재 여부 확인
Test-Path $PROFILE
# 프로필 파일이 없으면 생성
if (!(Test-Path $PROFILE)) {
New-Item -ItemType File -Path $PROFILE -Force
}
# 메모장으로 프로필 파일 열기
notepad $PROFILE
프로필 파일에 다음 내용 추가:
# kubectl 단축어
Set-Alias -Name k -Value kubectl
저장 후 PowerShell 재시작 또는 프로필 다시 로드:
# 프로필 다시 로드
. $PROFILE
테스트:
# 이제 k만 입력해도 kubectl과 동일하게 작동
k get nodes
k get pods
k version --client
macOS / Linux (Bash)
~/.bashrc 파일 편집:
# bashrc 파일 열기
nano ~/.bashrc
# 또는 vim 사용
# vim ~/.bashrc
파일 맨 아래에 다음 내용 추가:
# kubectl 단축어
alias k='kubectl'
저장 후 변경사항 적용:
# bashrc 다시 로드
source ~/.bashrc
테스트:
k get nodes
k get pods
macOS / Linux (Zsh)
macOS는 기본 셸이 Zsh이므로 ~/.zshrc 사용:
# zshrc 파일 열기
nano ~/.zshrc
파일 맨 아래에 다음 내용 추가:
# kubectl 단축어
alias k='kubectl'
저장 후 변경사항 적용:
# zshrc 다시 로드
source ~/.zshrc
kubectl 자동완성 설정
명령어를 일부만 입력하고 Tab 키를 눌러 자동완성 가능
예: k des + Tab → k describe
Windows (PowerShell)
# PowerShell 프로필 파일 열기
notepad $PROFILE
다음 내용 추가:
# kubectl 자동완성
kubectl completion powershell | Out-String | Invoke-Expression
# k 단축어에도 자동완성 적용
Register-ArgumentCompleter -CommandName k -ScriptBlock $__kubectlCompleterBlock
저장 후 PowerShell 재시작 또는:
. $PROFILE
테스트:
# 'des' 입력 후 Tab 키 → 'describe'로 자동완성
k des<Tab>
# 'get po' 입력 후 Tab 키 → 'get pods'로 자동완성
k get po<Tab>
macOS / Linux (Bash)
# bashrc 파일 열기
nano ~/.bashrc
다음 내용 추가:
# kubectl 자동완성
source <(kubectl completion bash)
# k 단축어에도 자동완성 적용
complete -o default -F __start_kubectl k
저장 후:
source ~/.bashrc
테스트:
# 'des' 입력 후 Tab 키
k des<Tab> # describe로 자동완성
# 리소스 이름도 자동완성
k get pods my-<Tab> # 실제 Pod 이름으로 자동완성
macOS / Linux (Zsh)
# zshrc 파일 열기
nano ~/.zshrc
다음 내용 추가:
# kubectl 자동완성
source <(kubectl completion zsh)
# k 단축어에도 자동완성 적용
compdef k=kubectl
저장 후:
source ~/.zshrc
자동완성 사용 예시
설정 완료 후 다음과 같이 사용 가능:
# 명령어 자동완성
k get<Tab> # get 다음에 사용 가능한 리소스 목록 표시
k des<Tab> # describe로 자동완성
k del<Tab> # delete로 자동완성
# 리소스 타입 자동완성
k get po<Tab> # pods로 자동완성
k get de<Tab> # deployments로 자동완성
k get sv<Tab> # services로 자동완성
# 리소스 이름 자동완성
k describe pod nginx-<Tab> # 실제 존재하는 Pod 이름으로 자동완성
k delete pod my-app-<Tab> # 실제 존재하는 Pod 이름으로 자동완성
# 네임스페이스 자동완성
k get pods -n kube-<Tab> # kube-system으로 자동완성
CKA/CKAD 시험 환경과 동일하게 설정
CKA/CKAD 시험에서 제공되는 기본 설정:
# ~/.bashrc 또는 ~/.zshrc에 추가
alias k='kubectl'
source <(kubectl completion bash) # 또는 zsh
complete -o default -F __start_kubectl k
이 설정은 Kubernetes 공식 인증 시험에서 기본으로 제공되므로, 로컬 환경에서도 동일하게 구성하면 시험 준비에 도움됨.
설정 확인
단축어 확인:
# Windows PowerShell
Get-Alias k
# macOS / Linux
alias | grep kubectl
출력 예시:
CommandType Name Version Source
----------- ---- ------- ------
Alias k -> kubectl
자동완성 테스트:
# 명령어 일부만 입력 후 Tab 키
k get po<Tab>
k des<Tab>
k dele<Tab>
정상적으로 자동완성되면 설정 완료.